﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VisaValeCheck.Library
{
    public class JaccardInfo
    {
        private Compra compraA;
        private Compra compraB;

        public double Proximidade { get; private set; }
        public double Distancia { get; private set; }

        public JaccardInfo(Compra a, Compra b)
        {
            this.compraA = a;
            this.compraB = b;

            CalcularProximidadeEDistancia();
        }

        protected virtual void CalcularProximidadeEDistancia()
        {
            int i = 0;
            double qtdIguais = 0, qtdDiferentes = 0;
            string localA = compraA.Local;
            string localB = compraB.Local;

            for (; i < localA.Length; i++)
            {
                if (i < localB.Length)
                    if (localA[i] == localB[i])
                        qtdIguais++;
                    else
                        qtdDiferentes++;
            }
            if (localA.Length < localB.Length)
                qtdDiferentes += localB.Length - localA.Length;
            else if (localA.Length > localB.Length)
                qtdDiferentes += localB.Length - localB.Length;

            this.Proximidade = qtdIguais / (qtdDiferentes + qtdIguais);
            this.Distancia = qtdDiferentes / (qtdDiferentes + qtdIguais);
        }
    }
}
